MessagePack + Serde
This crate connects Rust MessagePack library with serde
providing an ability to
easily serialize and deserialize both Rust built-in types, the standard library and custom data
structures.
Motivating example
let buf = to_vec.unwrap;
assert_eq!;
assert_eq!;
Type-based Serialization and Deserialization
Serde provides a mechanism for low boilerplate serialization & deserialization of values to and from MessagePack via the serialization API.
To be able to serialize a piece of data, it must implement the serde::Serialize
trait. To be
able to deserialize a piece of data, it must implement the serde::Deserialize
trait. Serde
provides an annotation to automatically generate the code for these
traits: #[derive(Serialize, Deserialize)]
.
Examples
use HashMap;
use ;
use ;
Efficient storage of &[u8]
types
MessagePack can efficiently store binary data. However, Serde's standard derived implementations do not use binary representations by default. Serde prefers to represent types like &[u8; N]
or Vec<u8>
as arrays of objects of arbitrary/unknown type, and not as slices of bytes. This creates about a 50% overhead in storage size.
Wrap your data in serde_bytes
to store blobs quickly and efficiently. Alternatively, configure an override in rmp_serde
to force use of byte slices.